Computer and electronic hardware are susceptible to a variety of types of faults that occur under many different operating conditions. For instance, adverse conditions involving temperature, aging, and radiation all present challenges to the operation of circuits. In addition, designs often do not contemplate various conditions and thus can result in undesirable functioning. Recovery from these faults has been the focus of many approaches. One approach that has been successful at addressing faults involves fault-tolerant designs. However, this approach is often prohibitively expensive to implement.
Another approach involves hardware that evolves, or changes, over time. Evolvable hardware approaches use principles of natural selection from the biological world to create electronic hardware designs. The hardware used in evolving designs typically includes a programmable logic-type device. For instance, microprocessors and field-programmable gate arrays (FPGAs) are often used as the implementation target for evolved designs because they can be programmed, tested and reprogrammed many times. In an example process for evolving a design, a population of designs is first randomly created, tested and evaluated based on the suitability to meet the design requirements. Based on natural selection principles, certain ones of the designs in the population are selected to “reproduce,” that is, used as a basis to create new designs for the population. The design selected to be eliminated is one with low “fitness.” Fitness is measured, for example, by the agreement between the design's output and an evaluation function. The process of testing, evaluating and reproducing is then repeated until a population of suitable designs has evolved.
Continued evolution of a hardware design over the course of time can be useful for overcoming faults, with evolved designs effectively designing around the fault. For instance, when a particular hardware component exhibits a fault, a design that uses that component will no longer exhibit good fitness, since its results will disagree with the evaluation function. A different design that uses other hardware components circumvents the fault, shows better fitness and is used as the basis of future generations. However, this evolution approach depends upon evaluation functions used for selecting the evolved designs. If an evaluation function is not entirely correct, the resulting evolved design reflects faults in the evaluation function and may be unusable. In addition, while evolvable hardware systems tend to degrade gracefully (i.e., they continue to function even after faults occur), accumulation of faults can eventually degrade evolved hardware systems to the point where they are unusable.
In some applications, the ability to withstand faults over a long period of time is of heightened importance. For instance, when circuits are difficult to access or even inaccessible, it is important that the circuits function for long periods of time without failing. One such application is in long-duration unmanned space flights. These flights can last decades and are often out of communication with a control center on Earth for much of that time. In addition, these flights can result in circuits being exposed to ionizing radiation that can cause faults. In these instances, the recovery from faults must be effected without human intervention.
The present invention may address one or more of the above issues.